package es.duma.search;

import es.duma.util.log.Log;

/**
 * Clase que define las propiedades y caracteristicas de cada modulo de acceso a repositorio
 * Java bean. Los atributos se acceden con los metodos get y set
 */
public class Repository {
    
    /**
     * Identificador del repositorio, es el nombre de la clase de implementacion del plugin de acceso 
     */
    private String id;
    
    /**
     * Nombre del repositorio 
     */
    private String nombre;
    
    /**
     * Path de la plantilla xsl que hace la transformacion
     */
    private String xsl;
    
    /**
     * Direccion web del repositorio
     */
    private String urlWeb;
    
    /**
     * Estado del repositorio true->activo  false->desactivado
     */
    private boolean active;
    
    /**
     * Numero maximo de resultados configurado para cada peticion
     */
    private int maxResults;
    
    /**
     * Tipo de contenido que almacena el repositorio
     */
    private String tipoContenido;
   
    
    /**
     * Constructor de la clase
     * 
     * @param id
     * @param nombre
     * @param xsl
     * @param urlWeb
     * @param active
     * @param maxResults
     * @param tipoContenido
     */
    public Repository(String id, String nombre,String xsl, String urlWeb, boolean active, int maxResults, String tipoContenido) {
        this.id=id;
        this.nombre=nombre;
        this.xsl=xsl;
        this.urlWeb=urlWeb;
        this.active=active;
        this.maxResults=maxResults;
        this.tipoContenido=tipoContenido;
        Log.debug(this,"Se ha creado el objeto repository "+id);
    }
    
    /**
     * Constructor de la clase
     * @param id
     */
    public Repository(String id){
        this.id=id;
        //Valores por defecto
        this.nombre="";
        this.xsl="";
        this.urlWeb="";
        this.active=false;
        this.maxResults=20;
        this.tipoContenido="foto";
        Log.debug(this,"Se ha creado el objeto repository "+id+" con los valores por defecto");
    }

    
    public String getId() {
        return id;
    }

    public String getNombre() {
        return nombre;
    }

    public String getUrlWeb() {
        return urlWeb;
    }

    public boolean isActive() {
        return active;
    }
    
    
    public int isActiveInt() {
        return (active)?1:0;
    }

    public int getMaxResults() {
        return maxResults;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setUrlWeb(String urlWeb) {
        this.urlWeb = urlWeb;
    }

    public void setActive(boolean active) {
        this.active = active;
    }
    
    public void setActive(String active) {
        boolean act=false;
        if (active!=null)
            act=Boolean.parseBoolean(active);
        setActive(act);    
    }
    
    public void setMaxResults(int maxResults) {
        this.maxResults = maxResults;
    }
    
    public void setMaxResults(String maxResults){
        int max=50;
        try {
            max=Integer.parseInt(maxResults);
        }catch(NumberFormatException e){
            Log.error("El parametro no se ha podido pasar a entero");
        }
        setMaxResults(max);
    }


    public void setTipoContenido(String tipoContenido) {
        this.tipoContenido = tipoContenido;
    }

    public String getTipoContenido() {
        return tipoContenido;
    }

    public void setXsl(String xsl) {
        this.xsl = xsl;
    }

    public String getXsl() {
        return xsl;
    }
}
